草庐IT

LeetCode - 198 打家劫舍

全部标签

代码随想录Day01|LeetCode707.二分查找、LeetCode27.移除元素

二分查找力扣题目链接思路        首先,二分查找的前提是有序的数组,如果不是有序数组,则不适用二分查找。其次,确定要查找的区间,这个很重要。一般来说,通常有左闭右闭和左闭右开这两个区间,不同的区间在写法上也会有不同,这是很多人会出错的地方。左闭右闭intsearch(vector&nums,inttarget){intl=0,r=nums.size()-1;//左闭右闭区间while(ltarget)r=mid-1;//查找的数比中间的数小则更新右区间elseif(nums[mid]在左闭右闭区间中,因为是包含最左边和最右边的数,所以l=0,r=nums.size()-1;(如果是左闭右

算法沉淀——动态规划之两个数组的 dp(下)(leetcode真题剖析)

算法沉淀——动态规划之两个数组的dp01.正则表达式匹配02.交错字符串03.两个字符串的最小ASCII删除和04.最长重复子数组01.正则表达式匹配题目链接:https://leetcode.cn/problems/regular-expression-matching/给你一个字符串s和一个字符规律p,请你来实现一个支持'.'和'*'的正则表达式匹配。'.'匹配任意单个字符'*'匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。示例1:输入:s="aa",p="a"输出:false解释:"a"无法匹配"aa"整个字符串。示例2:输入:s="aa",p="a*

LeetCode 2581.统计可能的树根数目:换根DP(树形DP)

【LetMeFly】2581.统计可能的树根数目:换根DP(树形DP)力扣题目链接:https://leetcode.cn/problems/count-number-of-possible-root-nodes/Alice有一棵n个节点的树,节点编号为0到n-1。树用一个长度为n-1的二维整数数组edges表示,其中edges[i]=[ai,bi],表示树中节点ai和bi之间有一条边。Alice想要Bob找到这棵树的根。她允许Bob对这棵树进行若干次猜测。每一次猜测,Bob做如下事情:选择两个不相等 的整数 u和 v ,且树中必须存在边 [u,v] 。Bob猜测树中 u 是 v 的父节点 。

LeetCode2111. Minimum Operations to Make the Array K-Increasing——动态规划

文章目录一、题目二、题解一、题目Youaregivena0-indexedarrayarrconsistingofnpositiveintegers,andapositiveintegerk.ThearrayarriscalledK-increasingifarr[i-k]Forexample,arr=[4,1,5,2,6,2]isK-increasingfork=2because:arr[0]arr[1]arr[2]arr[3]However,thesamearrisnotK-increasingfork=1(becausearr[0]>arr[1])ork=3(becausearr[0]>

【Day47】代码随想录之动态规划part9——打家劫舍、打家劫舍II、打家劫舍III

今天晚上补动态规划中的打家劫舍的系列的问题,不算难,一口气拿下。今日任务:198.打家劫舍213.打家劫舍II337.打家劫舍III文章目录题目一:198.打家劫舍题目二:213.打家劫舍II题目三:337.打家劫舍III(太难了,就简单欣赏下吧)题目一:198.打家劫舍Leetcode题目:【198.打家劫舍】当前房间的偷和不偷,会影响后面的选择,因此可以将其转化为一个动规的问题。(1)确定dp数组含义:考虑下标i(包含i),他能偷的最大金额为dp[i],最后就是dp[nums.size()-1](2)我们的递推公式:偷i:dp[i]=dp[i-2]+nums[i]不偷i:dp[i]=dp[

@[TOC](代码随想录算法训练营第十八天|Leetcode513 找树左下角的值、Leetcode112 路径总和、Leetcode106 从中序与后序遍历序列构造二叉树

代码随想录算法训练营第十八天|Leetcode513找树左下角的值、Leetcode112路径总和113路径总和ii、Leetcode106从中序与后序遍历序列构造二叉树105从前序与中序遍历序列构造二叉树●Leetcode513找树左下角的值●解题思路●代码实现●Leetcode112路径总和●解题思路●代码实现●相关题目:Leetcode113路径总和ii●解题思路●代码实现●Leetcode106从中序与后序遍历序列构造二叉树●使用数组元素构建二叉树●解题思路●代码实现●相关题目:Leetcode105从前序与中序遍历序列构造二叉树●代码实现●Leetcode513找树左下角的值题目链接

【刷题】 Leetcode 1022.从根到叶的二进制数之和

刷题1022.从根到叶的二进制数之和题目描述:思路一(dfs深搜万能版)思路二(栈迭代巧解版)总结Thanks♪(・ω・)ノ谢谢阅读!!!下一篇文章见!!!1022.从根到叶的二进制数之和题目描述:题目给出一棵二叉树,我们需要统计计算每条路径的二进制之和。给出的测试用例是1,0,1,0,1,0,1则运算为:(100)+(101)+(110)+(111)=4+5+6+7=22。难点就在于如何进行每个节点的储存计算,一般来说二叉树都会使用遍历或栈来进行运算。那就让我们来看看这个题如何完美解答吧!!!思路一(dfs深搜万能版)一般我们遇到二叉树都会想到遍历,但是这道题我们需要做到是如何记录该节点之前

代码随想录第2天|LeetCode 977有序数组的平方||209 长度最小的子数组||59 螺旋矩阵 II

第一章数组part02今日花费时间较多,在第二题的边界判定上消耗时间较多,应多注重细节。LeetCode977有序数组的平方Easy题目链接:977有序数组的平方思路:1.考虑到数组可能有负数有正数,它们的平方的大小都是从两边到0逐渐减小,所以可以设置两个指针从两边到中间运动,不断判断指针位置处两个数的大小,将较大的数从后往前放入数组res中。完整C++代码如下://时间复杂度:O(1)//空间复杂度:O(1)classSolution{public:vectorint>sortedSquares(vectorint>&nums){intlen=nums.size(); intl=0,r=l

代码随想录算法训练营Day 18|LeetCode513找树左下角的值、112 路径总和、113 路径总和II、106 从中序与后序遍历序列构造二叉树、105 从前序与中序遍历序列构造二叉树

LeetCode513找树左下角的值题目链接:找树左下角的值思路比较容易想到使用层序遍历,找到最后一层第一个节点即可。代码classSolution{public:intfindBottomLeftValue(TreeNode*root){queueque;if(root!=NULL)que.push(root);intresult=0;while(!que.empty()){intsize=que.size();for(inti=0;ival;//记录最后一行第一个元素if(node->left)que.push(node->left);if(node->right)que.push(nod

复习leetcode第四题:寻找两个正序数组的中位数(C语言)

我的代码思路是先创建一个新整型数组arr,然后将nums1和nums2中的数存入arr中。(存入后代码是无序的,例如leetcode给出的第一种情况,arr数组中应该是{1,3,2})易错点:但在使用循环存入时注意,arr的元素个数应该是nums1Size+nums2Size,因此存入时要小心,不要出现数组某一地址重新赋值的状况。本题的难点在于排序和判断中位数算法,分为了偶数个数字与奇数个数字两种中位数算法,但只需将这两个功能实现,本题便迎刃而解了。    一.排序方法:    本题笔者能立即想到的排序方法共有两种:选择法排序、冒泡法排序。笔者在本文中会将两种排序方式一一讲述,读者可以选择最适